#include <stdio.h>
/*void get_max(int x,int y)
{
    if(x>y)
    {
        printf("%d\n",x);
    }
    else if(x<y)
    {
        printf("%d\n",y);
    }
    else
    {
        printf("x=y=%d\n",x);
    }
}*/
int get_max(int x,int y)  //函数的定义
{
    return(x>y?x:y);
}
int main()
{ 
    int a,b; 
    scanf("%d %d",&a,&b);
    //get_max(a,b);
    int r=get_max(a,b);  //函数的调用
    printf("%d\n",r);
    return 0;
}


//写一个函数可以交换两个整形变量的内容（错误版1️⃣）
void exchange(int x,int y)
{
    printf("x=%d,y=%d\n",y,x);  //输出:a=20 b=10
}  //只是书写形式上有内容交换的假象，x==10，y==20，形式参数的值并未交换
int main()
{
    int a,b;
    scanf("%d %d",&a,&b);       //输入：10 20
    exchange(a,b);
    printf("a=%d b=%d\n",a,b);  //输出:a=10 b=20
    //本质上，a的地址中还是a的值，b也同理
    return 0;
}
//（错误版2️⃣）
void exchange(int x, int y)
{
	int z = 0;
	z = x;
	x = y;
	y = z;
	printf("x=%d y=%d", x, y); //输出:a=20 b=10
} //形式参数的值交换了，是新开辟的x、y的地址中的内容交换
  //a、b的地址中的内容未改变，但因a传给x(即x命名为a) b传给y(即y命名为b)，所以输出时表面上a（x）=20  b（y）=10
int main()
{
	int a, b;
	scanf("%d %d", &a, &b);    //输入:10 20
	exchange(a, b);
	printf("a=%d b=%d", a, b); //输出:a=10 b=20
	return 0;
}


//将三个整数按从大到小输出（见10.c）
void swap(int*x,int*y)
{
    int m=*x;
    *x=*y;
    *y=m;
}
int main()
{
    int a,b,c;
    scanf("%d %d %d",&a,&b,&c);
    if(a<b)
    swap(&a,&b);
    if(a<c)
    swap(&a,&c);
    if(b<c)
    swap(&b,&c);
    printf("%d %d %d\n",a,b,c);
    return 0;
}


//能把函数处理结果的两个数据返回给主函数的方法:
//①不可以return这两个数,因为return无法返回两个数
int test()
{
    return 3,4; //这是一个逗号表达式(操作符P31),从左向右依次计算，结果是最后一个表达式的结果
}
int main()
{
    int a=test();
    printf("%d",a);  //输出：4
    return 0;
}
//②形参用数组
void test(int arr[])  //int arr[] 相当于 int *arr
{
    arr[0]=3;         //arr[0] 相当于 *(arr+0)   P86 P31
    arr[1]=4;         //arr[1] 相当于 *(arr+1)   8.c
}
int main()
{
    int arr[2]={0};
    test(arr);
    return 0;
}
//③形参用两个指针 
void test(int* a,int* b)
{
    *a=3;
    *b=4;
}
int main()
{
    int a,b;
    test(&a,&b);
    return 0;
}
//④用两个全局变量（静态区）
//全局变量在其作用域内(整个工程)可直接访问
int a=0;
int b=0;
void test()
{
    a=3;
    b=4;
}
int main()
{
    test();
    printf("%d %d",a,b);  //输出:3 4
    return 0;
}